//package org.convallaria.system.biz.controller.other;
//
//import io.swagger.v3.oas.annotations.Operation;
//import io.swagger.v3.oas.annotations.Parameter;
//import io.swagger.v3.oas.annotations.tags.Tag;
//import lombok.RequiredArgsConstructor;
//import lombok.extern.slf4j.Slf4j;
//import org.convallaria.framework.security.annotation.RequiresPermissions;
//import org.convallaria.framework.security.config.AnonymousPathRegistry;
//import org.springframework.web.bind.annotation.*;
//
//import java.util.List;
//import java.util.Map;
//
///**
// * 匿名访问路径管理控制器
// * 提供动态管理匿名访问路径的API
// *
// * @author convallaria
// * @since 1.0.0
// */
//@Slf4j
//@RestController
//@RequestMapping("/admin/anonymous-paths")
//@RequiredArgsConstructor
//@Tag(name = "匿名访问路径管理", description = "动态管理匿名访问路径")
//public class AnonymousPathController {
//
//    private final AnonymousPathRegistry anonymousPathRegistry;
//
//    /**
//     * 获取所有匿名访问路径
//     */
//    @RequiresPermissions("system:security:anonymous:list")
//    @Operation(summary = "获取所有匿名访问路径", description = "获取静态配置和动态注册的匿名访问路径")
//    @GetMapping("/list")
//    public Map<String, Object> getAllAnonymousPaths() {
//        List<String> allPaths = anonymousPathRegistry.getAllAnonymousPaths();
//        int dynamicCount = anonymousPathRegistry.getDynamicPathCount();
//
//        return Map.of(
//            "totalCount", allPaths.size(),
//            "dynamicCount", dynamicCount,
//            "paths", allPaths
//        );
//    }
//
//    /**
//     * 注册动态匿名访问路径
//     */
//    @RequiresPermissions("system:security:anonymous:register")
//    @Operation(summary = "注册动态匿名访问路径", description = "动态注册匿名访问路径")
//    @PostMapping("/register")
//    public Map<String, Object> registerAnonymousPath(
//            @Parameter(description = "路径", example = "/api/test")
//            @RequestParam String path) {
//
//        log.info("注册动态匿名访问路径: {}", path);
//        anonymousPathRegistry.registerAnonymousPath(path);
//
//        return Map.of(
//            "success", true,
//            "message", "路径注册成功",
//            "path", path,
//            "dynamicCount", anonymousPathRegistry.getDynamicPathCount()
//        );
//    }
//
//    /**
//     * 注销动态匿名访问路径
//     */
//    @RequiresPermissions("system:security:anonymous:unregister")
//    @Operation(summary = "注销动态匿名访问路径", description = "注销动态注册的匿名访问路径")
//    @DeleteMapping("/unregister")
//    public Map<String, Object> unregisterAnonymousPath(
//            @Parameter(description = "路径", example = "/api/test")
//            @RequestParam String path) {
//
//        log.info("注销动态匿名访问路径: {}", path);
//        anonymousPathRegistry.unregisterAnonymousPath(path);
//
//        return Map.of(
//            "success", true,
//            "message", "路径注销成功",
//            "path", path,
//            "dynamicCount", anonymousPathRegistry.getDynamicPathCount()
//        );
//    }
//
//    /**
//     * 清空所有动态注册的路径
//     */
//    @RequiresPermissions("system:security:anonymous:clear")
//    @Operation(summary = "清空动态路径", description = "清空所有动态注册的匿名访问路径")
//    @DeleteMapping("/clear")
//    public Map<String, Object> clearDynamicPaths() {
//        log.info("清空所有动态匿名访问路径");
//        anonymousPathRegistry.clearDynamicPaths();
//
//        return Map.of(
//            "success", true,
//            "message", "动态路径已清空",
//            "dynamicCount", 0
//        );
//    }
//
//    /**
//     * 检查路径是否为匿名访问路径
//     */
//    @RequiresPermissions("system:security:anonymous:check")
//    @Operation(summary = "检查路径", description = "检查指定路径是否为匿名访问路径")
//    @GetMapping("/check")
//    public Map<String, Object> checkAnonymousPath(
//            @Parameter(description = "路径", example = "/auth/captcha")
//            @RequestParam String path) {
//
//        boolean isAnonymous = anonymousPathRegistry.isAnonymousPath(path);
//
//        return Map.of(
//            "path", path,
//            "isAnonymous", isAnonymous,
//            "message", isAnonymous ? "该路径为匿名访问路径" : "该路径需要认证"
//        );
//    }
//}
